﻿#define _CRT_SECURE_NO_WARNINGS  1
#pragma warning(disable:6031)

//给定一个大小为 n 的数组 nums ，返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n / 2 ⌋ 的元素。
//
//你可以假设数组是非空的，并且给定的数组总是存在多数元素
//
//来源：力扣（LeetCode）
//链接：https ://leetcode.cn/problems/majority-element
//著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。

#include <stdio.h>

int majorityElement(int* nums, int numsSize)
{
    int i = 0;
    int j = 0;
    int flag = 1;
    int m = 0;
    int count[25001] = { 0 };
    int num[25001] = { 0 };

    //先抽出第一个方便后面规律摆放
    num[0] = nums[0];
    count[0] += 1;
    m++;

    //历遍nums数组归类
    for (i = 1; i < numsSize; i++)
    {
        //立个nums[i]是没有出现过的数字的flag1        
        flag = 1;
        for (j = 0; j < m; j++)
        {
            if (nums[i] == num[j])
            {
                count[j] += 1;
                flag = 0;//flag倒了
                break;
            }
        }
        if (flag)//如果flag没倒，就给nums[i]放到新房间里
        {
            num[m] = nums[i];
            count[m] += 1;
            m++;
        }
    }
    //找最多的那个元素
    int more = count[0];
    int x = 0;//假定出现最多的元素所在下标为0；
    for (i = 1; i < m; i++)
    {
        if (more < count[i])
        {
            more = count[i];
            x = i;
        }
    }
    return num[x];
}

int main()
{
    //这里输入数组的方式自定，小编这里就是举了个例子。
    int nums[7] = { 0 };
    for (int i = 0; i < 7; i++)
    {
        scanf("%d", &nums[i]);
    }
    int ret = majorityElement(nums, 7);
    printf("多数元素是：%d\n", ret);
    return 0;
}